In the Internet age it is proving increasingly useful to provide application programs access to large volumes of user information. For example, in order to make the user experience on the visit to the website better, a user's preferences may be stored and used during the next visit. This information may comprise entitlement and authentication information, as well user preferences. Unfortunately, accessing this user information presents a severe challenge to application programs when using conventional methods.
One reason for this difficulty is that the user information may be spread over numerous databases. Various departments within a corporation may have their own databases, each with its own record of data for a given user. For example, the marketing department and the legal department may have their own databases. Thus, the application program seeking access to the user information needs to know the physical location of all the databases, with this conventional method.
Further complicating access to such information is that the various databases may store the information in different formats. Thus, even were an application program to know the physical location of the data, another hurdle must be faced in dealing with the various storage formats. Additionally, the content of the stored information may be mixed. For example, entitlement information may be mixed with user profile information, thus making data handling more complex. Furthermore, the owner of the database may make changes to the format or content of the database. Thus, appropriate changes must be made to the application program. However, these changes may fail to be made for a variety of reasons, for example, lack of notification to the application program, lack of resources or time to modify the application program, etc.
One conventional solution to the access of user information is to build a single database containing all the user information in a single format. However, this removes control of the information from individual departments. For example, marketing and legal departments may wish to have separate databases with their own version of the data and with their own control over the data.
Furthermore, transferring a large user record uses memory inefficiently. A certain amount of memory must be carved out for storing the user information for all the users currently using the website. As the volume of users increases, it becomes increasingly difficult to store all of the information. The increase in user volume (as well as increases in the number groups which store user information and changes to the type of data which is stored) also requires a method with the flexibility to expand (for example, to add databases) without requiring substantial software modifications or knowledge of such expansion to the application programs.
A still further complication is that each database may have different information for a given user. For example, the legal department may have a different e-mail address for a user than does the personal department. Consequently, the application program may face confusion over which data is valid.
Compatibility issues create further problems. For example, application programs may be written in a variety of computer languages, such as JAVA, C, and C++ and may run on a variety of computer platforms. Consequently, these application programs face hurdles in accessing data stored on a computer running on a different computer platform and/or with programs written in a different language.
Therefore, a need exists for a method and device for allowing access to user profile information. A further need exists to provide access to such information stored in multiple data sources. A still further need exists for such a method and device which provides a single point of entry for application programs to access such data. A still further need exists for shielding an application program from changes with respect to the location or format of the stored user data. A still further need exists for such a method and device which organizes well the various types of information which may be associated with a user, such as entitlement information and user profile information. A need exists for such a method and device which uses memory, CPU, and network resources efficiently. A still further need exists for such a method and device which is expandable without adversely impacting application programs.